/*
* Conditions Of Use
*
* This software was developed by employees of the Sigmatrix(Beijing) Corporation.
* This software is provided by sigmatrix as a service and is expressly
* provided "AS IS."  Sigmatrix MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
* AND DATA ACCURACY.  Sigmatrix does not warrant or make any representations
* regarding the use of the software or the results thereof, including but
* not limited to the correctness, accuracy, reliability or usefulness of
* the software.
*
* Permission to use this software is contingent upon your acceptance
* of the terms of this agreement.
*
*/
package com.sigmatrix.h5.service;

import com.sigmatrix.h5.dto.OutStorageData;
import com.sigmatrix.h5.entity.OutStorage;
import com.sigmatrix.h5.exception.DaoException;
import com.sigmatrix.h5.exception.ServiceException;
import com.sigmatrix.h5.page.PageBean;
import com.sigmatrix.h5.request.Request;
import com.sigmatrix.h5.response.Response;
import com.sigmatrix.h5.service.common.BaseService;
import com.sigmatrix.h5.web.vo.BaseOutStorageVo;
import com.sigmatrix.h5.web.vo.OutStorageVo;

/**
 *@ClassName: OutStorageService
 *@Description: TODO()
 *@author youjun
 *@date 2017年6月23日 上午9:41:27
 */
public interface OutStorageService extends BaseService<OutStorageData> {

	/**
	 *@Title: getOutStorageList
	 *@Description: TODO()
	 *@return Response
	 *@author youjun
	 *@date 2017年6月23日 上午9:57:09
	 *@param outStorageVo
	 *@param isQueryDetail 是否填充详情单
	 *@return
	 */
	Response getOutStorageList(OutStorageVo outStorageVo, boolean isQueryDetail) throws ServiceException;

	/**
	 *@Title: getChannelTypeDesc
	 *@Description: 获得出库单类型描述
	 *@return String
	 *@author youjun
	 *@date 2017年7月6日 上午11:20:30
	 *@param outStorageVo
	 *@return
	 */
	String getChannelTypeDesc(OutStorageVo outStorageVo);

	/**
	 *@Title: save
	 *@Description: 保存出库单
	 *@return Response
	 *@author youjun
	 *@date 2017年7月6日 上午11:31:42
	 *@param outStorageVo
	 *@return
	 * @throws ServiceException 
	 */
	Response save(OutStorageVo outStorageVo) throws ServiceException;

	/**
	 *@Title: findListByPage
	 *@Description: 分页查询出库单列表
	 *@return Response
	 *@author youjun
	 *@date 2017年7月8日 上午11:18:43
	 *@param pageBean 分页参数
	 *@param outStorageVo 查询参数
	 *@param isQueryDetail 是否查询详情
	 *@return
	 *@throws ServiceException
	 */
	Response findListByPage(PageBean<OutStorageData> pageBean, OutStorageVo outStorageVo, boolean isQueryDetail)
			throws ServiceException;

	/**
	 *@Title: findById
	 *@Description: 根据出库单ID查找出库单详情
	 *@return Response
	 *@author youjun
	 *@date 2017年7月8日 下午3:03:07
	 *@param baseRequest
	 *@param outStorageId
	 *@return
	 */
	Response findById(Request baseRequest, Long outStorageId) throws ServiceException;

	/**
	 *@Title: update
	 *@Description: TODO()
	 *@return Response
	 *@author youjun
	 *@date 2017年8月3日 下午10:18:56
	 *@param outStorageVo
	 *@return
	 */
	Response update(final OutStorageVo outStorageVo) throws ServiceException;
	/**
	 * 
	 *@Title: upload
	 *@Description: TODO()
	 *@return void
	 *@author gaomingkai
	 *@date 2018年1月11日 下午3:24:17
	 *@param outStorageVo
	 *@throws ServiceException
	 */
	void upload(OutStorageVo outStorageVo) throws ServiceException;

	/**
	 *@Title: colse
	 *@Description: 关闭出库单
	 *@return Response
	 *@author youjun
	 *@date 2017年8月23日 下午4:05:07
	 *@param baseOutStorageVo
	 *@return
	 */
	Response colse(BaseOutStorageVo baseOutStorageVo) throws ServiceException;
	/**
	 * 
	 *@Title: findByOutStorageIdId
	 *@Description: TODO()
	 *@return OutStorage
	 *@author gaomingkai
	 *@date 2018年1月11日 下午4:07:24
	 *@param id
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException
	 */
	OutStorage findByOutStorageIdId(final Long id, final String enterpriseCode) throws ServiceException;

}
